package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.SocWebsiteAddDTO;
import org.jsola.hr.dto.SocWebsiteUpdateDTO;
import org.jsola.hr.entity.SocWebsiteDO;
import org.jsola.hr.query.SocWebsiteQuery;
import org.jsola.hr.vo.SocWebsiteListVO;
import org.jsola.hr.vo.SocWebsiteVO;

import java.util.List;

/**
 * 社保网站与类型
 *
 * @author zhr
 */
@Api(tags = "hr-社保网站与类型")
public interface ISocWebsiteControllerAPI {

    /**
     * 新增社保网站与类型
     * @param socWebsiteAddDTO 社保网站与类型新增实体
     * @return 社保网站与类型展示对象
     */
    @ApiOperation(value = "新增社保网站与类型")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteAddDTO", dataType = "SocWebsiteAddDTO", value = "新增社保网站与类型", paramType = "body")
    })
    Result<SocWebsiteVO> save(SocWebsiteAddDTO socWebsiteAddDTO);


    /**
     * 修改社保网站与类型
     * @param socWebsiteUpdateDTO 社保网站与类型
     * @return 更新数量
     */
    @ApiOperation(value = "修改社保网站与类型")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteUpdateDTO", dataType = "SocWebsiteUpdateDTO", value = "修改社保网站与类型", paramType = "body")
    })
    Result<Integer> update(SocWebsiteUpdateDTO socWebsiteUpdateDTO);




    /**
     * 删除单个社保网站与类型，彻底删除
     * @param socWebsiteId 社保网站与类型id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个社保网站与类型，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteId", dataType = "Long", value = "社保网站与类型id", paramType = "path")
    })
    Result<Integer> delete(Long socWebsiteId);


    /**
     * 批量删除社保网站与类型，彻底删除
     * @param socWebsiteIds 社保网站与类型id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除社保网站与类型，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteIds", dataType = "Long[]", value = "社保网站与类型id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(Long[] socWebsiteIds);


    /**
     * 根据社保网站与类型id查询社保网站与类型详情
     * @param socWebsiteId 社保网站与类型id
     * @return 社保网站与类型详情
     */
    @ApiOperation(value="根据社保网站与类型id查询社保网站与类型详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteId", dataType = "Long", value = "社保网站与类型id", paramType = "path")
    })
    Result<SocWebsiteVO> findById(Long socWebsiteId);


    /**
     * 查询社保网站与类型
     * @param socWebsiteQuery 社保网站与类型查询参数
     * @return page
     */
    @ApiOperation(value="查询社保网站与类型")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteQuery", dataType = "SocWebsiteQuery", value = "社保网站与类型查询参数", paramType = "query")
    })
    Result<List<SocWebsiteListVO>> listAll(SocWebsiteQuery socWebsiteQuery);


     /**
     * 分页查询社保网站与类型
     * @param socWebsiteQuery 社保网站与类型查询参数
     * @return page
     */
    @ApiOperation(value="分页查询社保网站与类型")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socWebsiteQuery", dataType = "SocWebsiteQuery", value = "社保网站与类型查询参数", paramType = "query")
    })
    Result<Page<SocWebsiteListVO>> page(SocWebsiteQuery socWebsiteQuery);

    /**
     * 查询所有社保网站与类型无站点
     * @param isDistinct 是否去重
     * @return 返回
     */
    @ApiOperation(value="查询所有社保网站与类型无站点")
    Result<List<SocWebsiteDO>> listAllNotSitId(Boolean isDistinct);
}

